home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / SNNSV32.ZIP / SNNSv3.2 / kernel / sources / kr_pat_scan.l < prev    next >
Text File  |  1994-04-25  |  2KB  |  111 lines

  1. %{
  2. /*****************************************************************************
  3.   FILE           : kr_pat_scan.l
  4.   SHORTNAME      : pattern scanner
  5.   SNNS VERSION   : 3.2
  6.  
  7.   PURPOSE        : pattern file scanner, lex file
  8.   NOTES          : preliminary
  9.  
  10.   AUTHOR         : Michael Vogt
  11.   DATE           : 10.9.93
  12.  
  13.   CHANGED BY     : 
  14.   IDENTIFICATION : @(#)kr_pat_scan.l    1.5 4/15/94
  15.   SCCS VERSION   : 1.5
  16.   LAST CHANGE    : 4/15/94
  17.  
  18.              Copyright (c) 1990-1993  SNNS Group, IPVR, Univ. Stuttgart, FRG
  19.  
  20. ******************************************************************************/
  21.  
  22. #include "y.tab.h"
  23. #include <stdlib.h>
  24. #include <string.h>
  25. #include "glob_typ.h"
  26. #include "kr_typ.h"
  27. #include "kernel.h"
  28. #include "kr_pat_parse.h"
  29. #include "kr_pat_scan.ph"
  30.  
  31. %}
  32.  
  33. digit           [0-9]
  34. white           [ \t]
  35. free            [^\n]
  36. exp        [Ee][-+]?{digit}+
  37.  
  38. %%
  39.  
  40. \#{free}*                |
  41. {white}*                    ;
  42.  
  43. \n                        lineno++;
  44.  
  45. \[                        return(L_BRACKET);
  46.  
  47. \]                        return(R_BRACKET);
  48.  
  49. [Vv]{digit}+"."{digit}+(-{free}*)?      {
  50.                     s_dotpos = strchr((char *) yytext, '.');
  51.                     *s_dotpos = '\0';
  52.                     yylval.version.v = 
  53.                         atoi((char *) yytext+1);
  54.                     yylval.version.r =
  55.                         atoi((char *) s_dotpos+1);
  56.                     return(V_NUMBER);
  57.                         }
  58.  
  59. [-+]?{digit}+                |
  60. [-+]?{digit}+{exp}            |
  61. [-+]?{digit}+"."{digit}*({exp})?    |
  62. [-+]?{digit}*"."{digit}+({exp})?            {
  63.                             yylval.value=atof((char *) yytext);
  64.                             return(NUMBER);
  65.                         }
  66.  
  67. "SNNS pattern definition file"            return(VERSION_HEADER);
  68.  
  69. "generated at"{free}*                return(GENERATED_AT);
  70.  
  71. "No. of patterns"{white}*:            return(NO_OF_PATTERN);
  72.  
  73. "No. of input units"{white}*:            return(NO_OF_INPUT);
  74.  
  75. "No. of output units"{white}*:            return(NO_OF_OUTPUT);
  76.  
  77. "No. of variable input dimensions"{white}*:    return(NO_OF_VAR_IDIM);
  78.  
  79. "No. of variable output dimensions"{white}*:    return(NO_OF_VAR_ODIM);
  80.  
  81. "Maximum input dimensions"{white}*:        return(MAXIMUM_IDIM);
  82.  
  83. "Maximum output dimensions"{white}*:        return(MAXIMUM_ODIM);
  84.  
  85. [^ \t\n\[\]]+                    return(ERROR);
  86.  
  87. %%
  88.  
  89. int pplex(void)
  90. {
  91.     if (scanner_pattern_end_flag)
  92.     {
  93.     scanner_pattern_end_flag = 0;
  94.     yylval.value = 0.0;
  95.     return PATTERNEND;
  96.     }
  97.     else
  98.     return yylex();
  99. }
  100.  
  101. void scanner_await_pattern_end(void)
  102. {
  103.     scanner_pattern_end_flag = 1;
  104. }
  105.  
  106. void scanner_init_scanner(FILE *in_file)
  107. {
  108.     yyin = in_file;
  109.     scanner_pattern_end_flag = 0;
  110. }
  111.